package cn.com.scitc.swl.rssnews.fragment; import java.util.ArrayList; import java.util.List; import android.annotation.SuppressLint; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import cn.com.scitc.swl.rssnews.R; import cn.com.scitc.swl.rssnews.activity.RssDetailActivity; import cn.com.scitc.swl.rssnews.adapter.RssListAdapter; import cn.com.scitc.swl.rssnews.model.RssNews; import cn.com.scitc.swl.rssnews.service.FileService; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshListView; public class CollectFragment extends Fragment { private ListView actualListView; private PullToRefreshListView mPullToRefreshListView; /** 无收藏时的提示 */ private TextView tishi; private ImageView imageView; private RssListAdapter adapter; /** 新闻数据 */ private List<RssNews> listNews = new ArrayList<RssNews>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @SuppressLint("InflateParams") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = LayoutInflater.from(getActivity()).inflate( R.layout.fragment_collect, null); tishi = (TextView) view.findViewById(R.id.collect_tv); imageView = (ImageView) view.findViewById(R.id.collect_image); mPullToRefreshListView = (PullToRefreshListView) view .findViewById(R.id.rss_collect_refreshview); adapter = new RssListAdapter(getActivity()); mPullToRefreshListView .setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh( PullToRefreshBase<ListView> refreshView) { new ReadCollectList().execute(); } }); actualListView = mPullToRefreshListView.getRefreshableView(); registerForContextMenu(actualListView); // item点击事件 actualListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { RssNews rssNews = listNews.get(arg2 - 1); Intent intent = new Intent(getActivity(), RssDetailActivity.class); intent.putExtra("list", rssNews.toJSONString()); startActivity(intent); } }); // 设置长按事件 actualListView .setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int position, long arg3) { // 弹出对话框 final AlertDialogFragment dialog = new AlertDialogFragment( getActivity(), "你确定要取消收藏吗?"); dialog.show(new View.OnClickListener() { @Override public void onClick(View v) { FileService.delFile( listNews.get(position - 1).imgName + ".txt", "rssCollect"); new ReadCollectList().execute(); dialog.dismiss(); Toast.makeText(getActivity(), "取消收藏成功!", Toast.LENGTH_SHORT).show(); } }); return true; } }); new ReadCollectList().execute(); return view; } class ReadCollectList extends AsyncTask<Void, Void, List<RssNews>> { @Override protected List<RssNews> doInBackground(Void... v) { listNews = FileService.readListFile("rssCollect"); System.out.println(listNews.toString()); if (!listNews.toString().equals("[]")) { return listNews; } return null; } @Override protected void onPostExecute(List<RssNews> result) { super.onPostExecute(result); if (result != null) { adapter.setData(result); actualListView.setAdapter(adapter); adapter.notifyDataSetChanged(); tishi.setVisibility(View.GONE); imageView.setVisibility(View.GONE); } else if (result == null) { adapter.removeAll(); adapter.notifyDataSetChanged(); tishi.setVisibility(View.VISIBLE); imageView.setVisibility(View.VISIBLE); } mPullToRefreshListView.onRefreshComplete(); } } }